perm filename CS258[W84,JMC] blob
sn#740339 filedate 1984-01-22 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 cs258[w84,jmc] List of lectures
C00003 00003 Miscellaneous
C00004 00004 sublis[pat,alist] ← if at pat
C00006 00005 I have a few new proof files in [prf,jk]:
C00009 ENDMK
C⊗;
cs258[w84,jmc] List of lectures
Boyer and Moore theorem prover
(2 lectures)
Carolyn thesis (4)
blobs (1)
graphs (1)
Scottery (2)
Lambda calculus (1)
Floyd and Manna methods (2)
subgoal induction 1
data spaces 1
dynamic logic?, Hoare axioms?,
proofs about Prolog programs?
more on EKL 2
call by name, call-by-need, call-by-value
Goad 2
Manna or Waldinger ? 1
Jim Morris ?
C(F)
cs258[w82,jmc] topics for cs258 for winter 1982
PROBLE.258[W79,JMC] CS258←PROBLEM SET→WINTER 1979
NOTES.258[W79,JMC] non-termination of certain functions
Miscellaneous
lispax.lsp[prf,jk]
f(m,n) ← if m = 0 then 0 else f(m-1,f(m,n))
sublis[pat,alist] ← if at pat
then [if isvar pat
then {assoc[pat,alist}[λz. if n z
then error[]
else d z]
else pat]
else sublis[a pat,alist].sublis[d pat,alist]
match[pat,exp,alist] ← if alist = NO
then NO
else if at pat
then [if isvar pat
then {assoc[pat,alist]}
[λz.if n z
then [pat.exp].alist
else [if d z = exp
then alist
else NO]]
else [if pat = exp then alist else NO]]
else if at exp then NO
else match[d pat,d exp,match[a pat,a exp,alist]]
∀pat exp alist. match[pat,exp,alist] ≠ NO
⊃ sublis[pat,match[pat,exp,alist]] = exp
(define sublis
|∀pat alist.
sublis(pat,alist) = if atom pat
then [if isvar pat
then {assoc[pat,alist}[λz. if n z
then error[]
else d z]
else pat]
else sublis[a pat,alist].sublis[d pat,alist]
I have a few new proof files in [prf,jk]:
Subst.lsp[prf,jk] does the definition and properties of subst
(the unification algorithm does require the pars arguments to appear last:
this is the reason for reversing arguments to subst)
Flat.lsp[prf,jk] does the definition and properties of flatten
Mapcar.lsp[prf,jk] does the definition and properties of mapcar on multiple lists
Distin.lsp[prf,jk] does the predicate distinct(a,b,c,..)=a≠b∧a≠c∧b≠c∧... for
arbitrary number of arguments.
Der uses now high order unification.
A bug or a feature?
Unrestricted Skolemisation is equivalent to Axiom of Choice.
Thus, we can verify it:
(proof foo)
(trw |(∀x.∃y.A(x,y))⊃(∃f.∀x.A(x,f(x)))| (der))
(∀X.(∃Y.A(X,Y)))⊃(∃F.(∀X.A(X,F(X))))
In my opinion, unrestricted Skolemization with its consequent axiom
of choice is a feature not a bug from any practical point of view.